export class RequestMonitor {
    private map = new Map<string, number>();
    // 多久后显示 loading
    private timeOut: number = 1000;
    // 是否正在显示 Loading
    private showIng = false;
    start(key: string) {
        // 立即保存定时器句柄
        const t = setTimeout(() => {
            // 显示 loading，如果定时器触发
            this.loading();
        }, this.timeOut);
        //@ts-ignore
        this.map.set(key, t);
    }
    finish(key: string) {
        const t = this.map.get(key);
        if (t) {
            clearTimeout(t);
            // 仅在定时器句柄存在时删除并判断 map 状态
            this.map.delete(key);
            // 如果 map 为空，则关闭 loading
            if (this.map.size === 0) {
                this.closeLoading();
            }
        }
    }
    loading() {
        if (!this.showIng) {
            this.showIng = true;
            // 可以根据实际情况换成其他的加载中提示
            uni.showLoading({ title: "加载中" });
        }
    }
    closeLoading() {
        if (this.showIng) {
            this.showIng = false;
            uni.hideLoading();
        }
    }
}
